package com.ruifu.proj.vo.ptmain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruifu.proj.vo.pmptype.PmPTypeVO;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 项目、任务主实体类
 */
@Data
public class PmPtMainVO implements Serializable {

    /**
     * 项目任务ID，整型
     */
    private Long ptId;

    /**
     * 任务的父任务ID
     */
    private Long ptPId;

    /**
     * 对象类别，P表示项目；T表示任务；M表示模板
     */
    private String ptPtm;

    /**
     * 对象类别解释
     */
    private String ptPtmStr;

    /**
     * 项目或任务的编号;父任务code_本任务ID;
     */
    private String ptCode;

    /**
     * 项目或任务的名称
     */
    private String ptName;

    /**
     * 外键，PM_ptype表ID引用
     */
    private Long ptTypeId;

    /**
     * 项目任务执行人ID
     */
    private Long ptExecuter;
    @JsonFormat(pattern = "yyyy-MM-dd")

    /**
     * 项目、任务计划开始时间
     */
    private Date ptPlanStart;
    @JsonFormat(pattern = "yyyy-MM-dd")

    /**
     * 项目、任务计划结束时间
     */
    private Date ptPlanEnd;

    /**
     * 任务状态：A待下达，B待启动，C待提交，D待确认，E已关闭
     */
    private String ptStatus;

    /**
     * 任务状态解释
     */
    private String ptStatusStr;

    /**
     * 项目任务的备注说明信息字段
     */
    private String ptRemark;

    /**
     * 项目进度
     */
    private Integer ptProgress;

    /**
     * 排序字段
     */
    private String ptOrder;

    /**
     * 是否作为模板
     */
    private Boolean ptIsTemplate;

    /**
     * 创建者id
     */
    private Long ptCreator;

    /**
     * 依赖项
     */
    private String ptDependency;

    private Integer permission;  //权限十进制

    /**
     * 时间锁定  0 代表未锁定， 1 代表锁定
     */
    private String ptDatelock;

    private String ptAssignors;//委托人链(截取委托链条最后一个人进行展示)

    private Long ptAssignorId;//委托人

    /**
     * 项目任务预算工期天数记录字段，整数
     */
    private BigDecimal ptDays;

    /**
     * 保密级别，4，绝密；3，机密；2，保密；1，一般；
     */
    private Long ptSafeLevel;

    /**
     * 紧急程度，N- 一般 M-紧急 T-特急
     */
    private String ptSpecial;

    private PmPTypeVO pmPType;

    /**
     * 实际开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date pvStartTime;

    /**
     * 实际结束时间(审批通过后)
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date pvEndTime;

    public String getPtStatusStr() {
        switch (ptStatus) {
            case "A":
                ptStatusStr = "未下达";
                break;
            case "B":
                ptStatusStr = "待启动";
                break;
            case "C":
                ptStatusStr = "启动中";
                break;
            case "D":
                ptStatusStr = "待审核";
                break;
            case "E":
                ptStatusStr = "已关闭";
                break;
            case "F":
                ptStatusStr = "已中止";
                break;
            case "TA":
                ptStatusStr = "未启用";
                break;
            case "TB":
                ptStatusStr = "启用";
                break;
            case "TC":
                ptStatusStr = "停用";
                break;
            default:
                ptStatusStr = "已暂停";
        }
        return ptStatusStr;
    }

    public String getPtPtmStr() {
        switch (ptPtm) {
            case "P":
                ptPtmStr = "项目";
                break;
            case "T":
                ptPtmStr = "任务";
                break;
            default:
                ptPtmStr = "";
        }
        return ptPtmStr;
    }
}
